/**
 * 班级管理 API
 */

import { get, post, put, del, upload, download } from '@/utils/request'

/**
 * 获取班级列表
 * @param {Object} params { page, pageSize, className, major }
 * @returns {Promise}
 */
export function getClassList(params) {
    return get('/class/list', params)
}

/**
 * 获取班级详情
 * @param {String|Number} id 班级ID
 * @returns {Promise}
 */
export function getClassDetail(id) {
    return get('/class/detail', { id })
}

/**
 * 添加班级
 * @param {Object} data 班级信息
 * @returns {Promise}
 */
export function addClass(data) {
    return post('/class/add', data)
}

/**
 * 更新班级信息
 * @param {String|Number} id 班级ID
 * @param {Object} data 班级信息
 * @returns {Promise}
 */
export function updateClass(id, data) {
    return post('/class/update', { ...data, id })
}

/**
 * 删除班级
 * @param {String|Number} id 班级ID
 * @returns {Promise}
 */
export function deleteClass(id) {
    return del(`/class/delete/${id}`)
}

/**
 * 批量删除班级
 * @param {Array} ids 班级ID数组
 * @returns {Promise}
 */
export function batchDeleteClasses(ids) {
    return post('/class/batch-delete', ids)
}

/**
 * 导入班级数据
 * @param {File} file Excel 文件
 * @param {Function} onProgress 上传进度回调
 * @returns {Promise}
 */
export function importClasses(file, onProgress) {
    const formData = new FormData()
    formData.append('file', file)
    return upload('/class/import', formData, onProgress)
}

/**
 * 导出班级数据
 * @param {Object} params 搜索条件
 * @returns {Promise}
 */
export function exportClasses(params = {}) {
    const filename = `班级列表_${new Date().toISOString().slice(0, 10)}.xlsx`
    return download('/class/export', params, filename)
}

/**
 * 下载班级导入模板
 * @returns {Promise}
 */
export function downloadClassTemplate() {
    return download('/class/template', {}, '班级信息导入模板.xlsx')
}

/**
 * 获取所有班级（用于下拉选择）
 * @returns {Promise}
 */
export function getAllClasses() {
    return get('/class/all')
}

/**
 * 获取班级统计信息
 * @returns {Promise}
 */
export function getClassStatistics() {
    return get('/class/statistics')
}

